查看原文
其他

理解实例方法、类方法、静态方法

大邓 大邓和他的Python 2022-07-09

2019年10月4日-6日

Python爬虫与文本分析工作坊 & 课题申报高级研修班


python中的高级语法有类和装饰器,今天我们学习一下实例方法、类方法和静态方法的区别。其中类方法和静态方法分别用了装饰器中的classmethod和staicmethod关键词。

在此之前我们先要理解实例和类的区别。比如人类是一种类,而刘慈欣是人类中的一员,刘慈欣就是一个类的实例。

  1. class Human(object):

  2. name = "人类"


  3. def instance_method(self, name):

  4. print("执行实例方法, {}{}".format(self, name))


  5. @classmethod

  6. def class_method(cls, name):

  7. print("执行类方法, {}{}".format(cls, name))


  8. @staticmethod

  9. def static_method(name):

  10. print("执行静态方法 {}".format(name))

实例方法

实例是类的具体例子,那么调用实例先要初始化,这里也叫做实例化。

  1. daliu = Human()

  2. daliu

  1. <__main__.Human at 0x1078727f0>

刘慈欣是人类的一员,是一个实例对象,应该具有人类的一般能力,所以像daliu可以使用实例方法、类方法和静态方法。总结, 实例对象可以调用实例方法、类方法、静态方法。

  1. daliu.instance_method('刘慈欣')

  2. daliu.class_method('刘慈欣')

  3. daliu.static_method('刘慈欣')

  1. 执行实例方法, <__main__.Human object at 0x1078727f0>刘慈欣

  2. 执行类方法, <class '__main__.Human'>刘慈欣

  3. 执行静态方法 刘慈欣

类方法和静态方法

人类是类对象,刘慈欣是人类的一个实例对象,人类是不能有刘慈欣这么特殊的方法。我们看下面这个例子

  1. Human.instance_method('刘慈欣')

  1. ---------------------------------------------------------------------------


  2. TypeError Traceback (most recent call last)


  3. <ipython-input-12-fd15e42d8825> in <module>

  4. ----> 1 Human.instance_method('刘慈欣')

  1. TypeError: instance_method() missing 1 required positional argument: 'name'

类对象 不能调用实例方法,但能调用类方法和静态方法。

  1. Human.class_method('刘慈欣')

  2. Human.static_method('刘慈欣')

  1. 执行类方法, <class '__main__.Human'>刘慈欣

  2. 执行静态方法 刘慈欣


推荐阅读

新经济形式下提升战略思维?双一流名校邀你读硕士

周志华《机器学习》西瓜书新出算法推导视频!(超级详细)

【视频课】Python爬虫与文本数据分析

计算社会经济学

国务院政府工作报告(1954—2017)文本挖掘及社会变迁研究

文本大数据分析在经济学和金融学中的应用:一个文献综述

PyQuery: 爬虫界最简洁优雅的库


预报名开始| Python爬虫与文本分析工作坊 & 课题申报高级研修班

咨询加请加微信,记得备注“工作坊”

1

欢迎扫码咨询!!



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存